/**
 * 组件配置相关工具类
 */

/**
 * 获取统计卡片配置
 * @param {boolean} randomize 是否使用随机数据
 * @returns {Array} 统计卡片配置数组
 */
export const getStatCardConfig = (randomize = true) => {
  // 如果需要随机数据，则生成随机值，否则使用固定值
  const articleCount = randomize ? Math.floor(Math.random() * 300) + 100 : 128
  const categoryCount = randomize ? Math.floor(Math.random() * 10) + 8 : 12
  const commentCount = randomize ? Math.floor(Math.random() * 500) + 200 : 256
  const visitorCount = randomize ? Math.floor(Math.random() * 2000) + 500 : 1024

  // 随机生成趋势变化
  const getRandomTrend = (max) => {
    const change = Math.floor(Math.random() * max) + 1
    return Math.random() > 0.2 ? `+${change}` : `-${change}`
  }

  return [
    {
      title: '文章数量',
      number: articleCount.toString(),
      trend: randomize ? getRandomTrend(5) : '+2',
      icon: 'Document',
      type: 'primary',
    },
    {
      title: '分类数量',
      number: categoryCount.toString(),
      trend: randomize ? getRandomTrend(2) : '+0',
      icon: 'Collection',
      type: 'success',
    },
    {
      title: '评论数量',
      number: commentCount.toString(),
      trend: randomize ? getRandomTrend(10) : '+5',
      icon: 'ChatDotRound',
      type: 'warning',
    },
    {
      title: '访客数量',
      number: visitorCount.toLocaleString(),
      trend: randomize ? getRandomTrend(50) : '+128',
      icon: 'View',
      type: 'info',
    },
  ]
}

/**
 * 获取表单验证规则
 * @param {string} type 规则类型
 * @returns {Array} 验证规则数组
 */
export const getValidationRules = (type) => {
  const rules = {
    username: [
      { required: true, message: '请输入用户名', trigger: 'blur' },
      { min: 3, max: 20, message: '长度在 3 到 20 个字符', trigger: 'blur' },
    ],
    password: [
      { required: true, message: '请输入密码', trigger: 'blur' },
      { min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' },
    ],
  }
  return rules[type] || []
}

/**
 * 生成表单配置
 * @param {Array} fields 字段配置数组
 * @returns {Object} 表单配置对象
 */
export const generateFormConfig = (fields) => {
  return fields.reduce((acc, field) => {
    acc[field.name] = field.defaultValue || ''
    return acc
  }, {})
}
